package com.pro.controller;

import com.pro.pojo.JsCourse;
import com.pro.pojo.JsonData;
import com.pro.service.JsCourseService;
import com.pro.utils.FastDFSClientUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.HashMap;

/**
 * @Author 祖铭泽
 * @Date 2022/1/12/0012
 * @description 课程 控制层
 */
@RequestMapping("course")
@Controller
public class JsCourseController {
    @Autowired
    private JsCourseService jsCourseService;
    @Autowired
    private FastDFSClientUtil fastDFSClientUtil;

    /**
     * @Author 祖铭泽
     * @Date 2022/1/12/0012
     * @description 根据课程分类、课程名称、课程现价查询所有课程
     */
    @ResponseBody
    @RequestMapping(value = "/getCourses")
    public JsonData getCourses(JsCourse jsCourse){
        return jsCourseService.getCourses(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/13/0012
     * @description 根据课程id修改上架状态
     */
    @ResponseBody
    @RequestMapping(value = "/updateCourseStatus")
    public JsonData updateCourseStatus(JsCourse jsCourse) {
        return jsCourseService.updateCourseStatus(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/13/001
     * @description 查询课程分类下是否还有课程
     */
    @ResponseBody
    @RequestMapping(value = "/getClassLowerCourseCount")
    public JsonData getClassLowerCourseCount(JsCourse jsCourse) {
        return jsCourseService.getClassLowerCourseCount(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/13/001
     * @description 根据分类id查询分类下的课程
     */
    @ResponseBody
    @RequestMapping(value = "/getCoursesByClassId")
    public JsonData getCoursesByClassId(JsCourse jsCourse) {
        return jsCourseService.getCoursesByClassId(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/13/001
     * @description 根据id删除课程
     */
    @ResponseBody
    @RequestMapping(value = "/deleteCourseByCourseId")
    public JsonData deleteCourseByCourseId(JsCourse jsCourse) {
        return jsCourseService.deleteCourseByCourseId(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/13/001
     * @description 高级检索 根据课程名称、课程分类、课程id、课程现价、课程上传人、课程关键字查找课程
     */
    @ResponseBody
    @RequestMapping(value = "/getCoursesCheck")
    public JsonData getCoursesCheck(JsCourse jsCourse) {
        return jsCourseService.getCoursesCheck(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/14/001
     * @description 根据课程id查看课程详细信息
     */
    @ResponseBody
    @RequestMapping(value = "/getCourseByCourseId")
    public JsonData getCourseByCourseId(JsCourse course) {
        return jsCourseService.getCourseByCourseId(course);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/14/001
     * @description 根据课程id修改课程信息
     */
    @ResponseBody
    @RequestMapping(value = "/updateCourseByCourseId")
    public JsonData updateCourseByCourseId(JsCourse jsCourse) {
        return jsCourseService.updateCourseByCourseId(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/15/001
     * @description 根据课程关键字、课程名称、课程现价查询自己的课程
     */
    @ResponseBody
    @RequestMapping(value = "/getSelfCourses")
    public JsonData getSelfCourses(JsCourse jsCourse) {
        return jsCourseService.getSelfCourses(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/15/001
     * @description 高级检索 根据课程名称、课程分类、课程id、课程现价、课程上传人、课程关键字查找自己的课程
     */
    @RequestMapping(value = "/getSelfCoursesCheck")
    @ResponseBody
    public JsonData getSelfCoursesCheck(JsCourse jsCourse) {
        return jsCourseService.getSelfCoursesCheck(jsCourse);
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/17/001
     * @description 上传课程 图片
     */
    @RequestMapping(value = "/uploadCourseImg")
    @ResponseBody
    public JsonData uploadCourseImg(@RequestParam("image") MultipartFile file){
        if(file.getSize() > 0){
            //数据库文件路径
            String fileUrl = null;
            try {
                fileUrl = fastDFSClientUtil.uploadFile(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
            HashMap<String, Object> map = new HashMap<>();
            //前台传递路径
            String src = fastDFSClientUtil.getResAccessUrl(fileUrl);
            map.put("code", 200);
            map.put("src", src);
            return map.get("src") != null ? JsonData.buildSuccess(map) : JsonData.buildError("上传失败");
        }
        return null;
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/17/001
     * @description 上传课程 视频
     */
    @RequestMapping(value = "/uploadCourseVideo")
    @ResponseBody
    public JsonData uploadCourseVideo(@RequestParam("video") MultipartFile file){
        HashMap<String, Object> map = new HashMap<>();
        if(file.getSize() > 0){
            //数据库文件路径
            String fileUrl = null;
            try {
                fileUrl = fastDFSClientUtil.uploadFile(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
            //前台传递路径
            String src = fastDFSClientUtil.getResAccessUrl(fileUrl);
            //System.out.println(src);
            map.put("src", src);
            map.put("code", 200);
            return map.get("src") != null ? JsonData.buildSuccess(map) : JsonData.buildError("上传失败");
        }
        return null;
    }
    /**
     * @Author 祖铭泽
     * @Date 2022/1/20/001
     * @description 添加课程
     */
    @RequestMapping(value = "/addCourse")
    @ResponseBody
    public JsonData addCourse(JsCourse jsCourse) {
        return jsCourseService.addCourse(jsCourse);
    }
}
